import Vue from 'vue'
import App from './App.vue'
import router from './router'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import store from './store'
//md编辑器
import mavonEditor from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
Vue.use(mavonEditor)

// 设置反向代理，前端请求默认发送到 http://localhost:8443/api
var axios = require('axios')
axios.defaults.baseURL = 'http://localhost:8443/api'
//让前端能够带上 cookie。这样，前端每次发送请求时就会带上 sessionId，shiro 就可以通过 sessionId 获取登录状态并执行是否登录的判断。
axios.defaults.withCredentials = true

// 全局注册，之后可在其他组件中通过 this.$axios 发送数据
Vue.prototype.$axios = axios
Vue.config.productionTip = false//阻止vue 在启动时生成生产提示

Vue.use(ElementUI)

//首先判断访问的路径是否需要登录，如果需要，判断 store 里有没有存储 user 的信息，如果存在，则放行，否则跳转到登录页面，并存储访问的页面路径（以便在登录后跳转到访问页）
//在访问每一个路由前调用
router.beforeEach((to, from, next) => {
      if (to.meta.requireAuth) {
        if (store.state.user.username!='') {
            //访问每个页面前都向后端发送一个请求，目的是经由拦截器验证服务器端的登录状态
            axios.get('/authentication').then(resp => {
                if (resp) next()
            })
        } else {
          next({
            path: 'login',
            query: {redirect: to.fullPath}    //将跳转的路由path作为参数，登录成功后跳转到该路由
          })
        }
      } else {
        next()
      }
    }
)


new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
